在任何時間,只能有一個FragmentManager來控制 Fragment 的背景堆棧(back stack)。如果你的應用程式,同時在螢幕上顯示多個兄弟 Fragment,或是有使用子 Fragment,則必須指定一個FragmentManager來處理應用程式的主要導航。
為了在一個 fragment transaction 中定義主要導航 Fragment,請調用setPrimaryNavigationFragment(),來傳遞 Fragment 實例。以便這個實例的childFragmentManager有主要控制權。
把導航結構視為一系列層級,Activity 作為這個結構的最外層,將每層的子 Fragment 包在裡面。每一層都必須有一個主要導航 Fragment。當發生返回事件,最內層控制導航行為。一但最內層不再有彈回的 fragment transaction,導航控制就會回到上一層。這個程序會一直重複,直到到達 Activity。
注意,當同時間顯示2個或以上數量的 Fragment,它們之中只有一個可以作為主要導航 Fragment。將 Fragment 設為主要導航 Fragment,會移除前一個 Fragment 的(導航)指定。
[註1] 兄弟(sibling) Fragment
sibling 這邊用兄弟而不是同級來解讀,是因為它們有一個重要特徵,都屬於同一個父級。
例如下圖的 I、J 節點都屬於父級 E;G、H 節點都屬於父級 C。
Nodes which belong to the same parent are called as siblings.
In other words, nodes with the same parent are sibling nodes.
參考資料